//clase para enviar datos al puerto serial
package logica;

import java.io.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.comm.*;

public class EnviaDatosPuerto extends Thread {

  static Enumeration listaPuertos;
  static CommPortIdentifier idPuerto;
  //static String mensaje = "Tutorial de Java, Comunicaciones Serie\n";
  static String mensaje = "123456789";
  String cadena1 = "A-0.824-0.686-0.000-0.549-0.60-0-1-";
  String cadena2 = "B-0.882-0.745-1.000-1.862-0.70-0-1-";
  String cadena3 = "C-0.882-1.000-1.098-1.078-0.02-0-1-";
  String cadena4 = "D-0.726-1.078-0.882-0.960-0.40-0-1-";
  
  String paquete1[] = {"A-0.824-0.686-0.000-0.549-0.60-0-1-",
    "B-0.882-0.745-1.000-1.862-0.70-0-1-",
    "C-0.882-1.000-1.098-1.078-0.02-0-1-", "D-0.726-1.078-0.882-0.960-0.40-0-1-"};
    String paquete2[] = {"A-0.132-0.623-0.256-0.385-0.65-1-0-",
    "B-0.444-0.789-1.684-1.574-0.90-1-0-",
    "C-0.496-1.123-1.944-1.715-0.05-1-0-", "D-0.745-1.133-0.789-0.980-0.40-1-0-"};
  //static String mensaje = "Hola Puerto Serie\n";
  static SerialPort puertoSerie;
  static OutputStream salida;

  public static void main(String[] args) {
    EnviaDatosPuerto obj = new EnviaDatosPuerto();
    obj.start();
  }

  @Override
  public void run() {
    listaPuertos = CommPortIdentifier.getPortIdentifiers();
    while (listaPuertos.hasMoreElements()) {
      idPuerto = (CommPortIdentifier) listaPuertos.nextElement();
      if (idPuerto.getPortType() == CommPortIdentifier.PORT_SERIAL) {
// if( idPuerto.getName().equals("/dev/term/a") ) {
        if (idPuerto.getName().equals("COM2")) {
// Si el puerto no está en uso, se intenta abrir
          try {
            puertoSerie = (SerialPort) idPuerto.open("AplEscritura", 2000);
          } catch (PortInUseException e) {
          }
// Se obtiene un canal de salida
          try {
            salida = puertoSerie.getOutputStream();
          } catch (IOException e) {
          }
// Se fijan los parámetros de comunicación del puerto
          try {
            puertoSerie.setSerialPortParams(9600,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE);
          } catch (UnsupportedCommOperationException e) {
          }
// Se envía el mensaje
          for (int i = 0; i < 2; i++) {
            try {
              sleep(10000);
              for(int x =0; x < paquete1.length;x++){
                salida.write(paquete1[x].getBytes());
                System.out.println("Enviando Cadena: " + paquete1[x]);
                sleep(2000);
              }
              sleep(10000);
              for(int x =0; x < paquete2.length;x++){
                salida.write(paquete2[x].getBytes());
                System.out.println("Enviando Cadena: " + paquete2[x]);
                sleep(2000);
              }
             
            }catch (InterruptedException ex) {
                Logger.getLogger(EnviaDatosPuerto.class.getName()).log(Level.SEVERE, null, ex);
              } 
            catch (IOException e) {
            }

          }
        }
      }
    }

  }
}
